Expand description
tray-icon lets you create tray icons for desktop applications.
Platforms supported:
- Windows
- macOS
- Linux (gtk Only)
Platform-specific notes:
- On Windows and Linux, an event loop must be running on the thread, on Windows, a win32 event loop and on Linux, a gtk event loop. It doesn’t need to be the main thread but you have to create the tray icon on the same thread as the event loop.
- On macOS, an event loop must be running on the main thread so you also need to create the tray icon on the main thread.
Dependencies (Linux Only)
On Linux, gtk
, libxdo
is used to make the predfined Copy
, Cut
, Paste
and SelectAll
menu items work and libappindicator
or libayatnat-appindicator
are used to create the tray icon, so make sure to install them on your system.
Arch Linux / Manjaro:
pacman -S gtk3 xdotool libappindicator-gtk3 #or libayatana-appindicator
Debian / Ubuntu:
sudo apt install libgtk-3-dev libxdo-dev libappindicator3-dev #or libayatana-appindicator3-dev
Examples
Create a tray icon without a menu.
use tray_icon::{TrayIconBuilder, Icon};
let tray_icon = TrayIconBuilder::new()
.with_tooltip("system-tray - tray icon library!")
.with_icon(icon)
.build()
.unwrap();
Create a tray icon with a menu.
use tray_icon::{TrayIconBuilder, menu::Menu,Icon};
let tray_menu = Menu::new();
let tray_icon = TrayIconBuilder::new()
.with_menu(Box::new(tray_menu))
.with_tooltip("system-tray - tray icon library!")
.with_icon(icon)
.build()
.unwrap();
Processing tray events
You can use TrayIconEvent::receiver
to get a reference to the TrayIconEventReceiver
which you can use to listen to events when a click happens on the tray icon
use tray_icon::TrayIconEvent;
if let Ok(event) = TrayIconEvent::receiver().try_recv() {
println!("{:?}", event);
}
You can also listen for the menu events using MenuEvent::receiver
to get events for the tray context menu.
use tray_icon::{TrayIconEvent, menu::MenuEvent};
if let Ok(event) = TrayIconEvent::receiver().try_recv() {
println!("tray event: {:?}", event);
}
if let Ok(event) = MenuEvent::receiver().try_recv() {
println!("menu event: {:?}", event);
}
Modules
- Re-export of muda crate and used for tray context menu.
Structs
- An icon used for the window titlebar, taskbar, etc.
- Describes a rectangle including position (x - y axis) and size.
- Tray icon struct and associated methods.
- Attributes to use when creating a tray icon.
TrayIcon
builder struct and associated methods.- Describes a tray event emitted when a tray icon is clicked
- An unique id that is associated with a tray icon.
Enums
- An error produced when using
Icon::from_rgba
with invalid arguments. - Errors returned by tray-icon.
Type Aliases
- Convenient type alias of Result type for tray-icon.
- A reciever that could be used to listen to tray events.